package code.c02_list.linkList;

import code.c02_list.linkList.LinkListClass;
import code.c02_list.clinkList.LinkNode;

/**
 * @author thinkpad - 83start
 * @version v1.0
 * @create 2022/9/18 19:02
 * @package code.c02_list.classwork.examples
 * @description 有一个含有2n 个整数的单链表L（a0,b0,a1,b1,a2,b2……an-1,bn-1）
 * * 设计一个算法将其拆分连个带头节点的单链表 A 和 B
 */

public class Exam_2_15 {
    public static void split(
            LinkListClass<Integer> L,
            LinkListClass<Integer> A, LinkListClass<Integer> B) {
        LinkNode<Integer> p = L.head.next;
        LinkNode<Integer> q = null;
        LinkNode<Integer> t = A.head;
        while (p != null) {
            t.next = p;
            t = p;
            p = p.next;

            if (p != null) {
                q = p.next;
                p.next = B.head.next;
                B.head.next = p;
                p = q;
            }
        }

        t.next = null;
    }
}
